import router from '@/router'
import { useLoginUserStore } from '@/stores/useLoginUserStore.ts'
import { message } from 'ant-design-vue'

// 是否为首次加载登录用户信息
let firstFetchLoginUser = true
/**
 * 路由守卫，校验用户权限
 */
router.beforeEach(async (to, from, next) => {
  const loginUserStore = useLoginUserStore()
  let loginUser = loginUserStore.loginUser
  if (firstFetchLoginUser) {
    //  确保页面刷新时，首次加载时，能等待后端返回用户信息后在校验权限
    await loginUserStore.fetchLoginUser()
    loginUser = loginUserStore.loginUser
    firstFetchLoginUser = false
  }
  const toUrl = to.fullPath // 目标路由的完整路径
  // 可以自己定义权限校验逻辑，比如管理员才能访问 /admin开头的页面
  if (toUrl.startsWith('/admin')) {
    if (!loginUser || loginUser.userRole !== 'admin') {
      message.error('您没有管理员权限，无法访问管理员页面')
      next('/user/login?redirect=' + to.fullPath) // 重定向到首页或其他无权限页面
      return
    }
  }
  next()
})
